import axios from 'axios'
import { ElMessage } from 'element-plus'
import router from '@/router'

// 创建axios实例
const service = axios.create({
    baseURL: 'http://120.27.247.209/prod-api',
    timeout: 10000,
    headers: {
        'Content-Type': 'application/json;charset=UTF-8'
    }
})

// 请求拦截器
service.interceptors.request.use(config => {
    const token = localStorage.getItem('exam_token')
    if (token) {
        config.headers.Authorization = `Bearer ${token}`
    }
    return config
}, error => {
    return Promise.reject(error)
})

// 响应拦截器
service.interceptors.response.use(
    response => {
        const res = response.data
        // 业务状态码处理（根据实际接口调整）
        if (res.code !== 200) {
            ElMessage.error(res.msg || '请求错误')
            // return Promise.reject(new Error(res.msg || 'Error'))
        }
        return res
    },
    error => {
        // 统一错误处理
        if (error.response) {
            switch (error.response.status) {
                case 401:
                    localStorage.removeItem('exam_token')
                    router.push('/login')
                    ElMessage.error('登录状态已过期')
                    break
                case 403:
                    ElMessage.error('没有操作权限')
                    break
                case 500:
                    ElMessage.error('服务器异常')
                    break
                default:
                    ElMessage.error(error.response.data.message || '请求失败')
            }
        } else {
            ElMessage.error('网络连接异常')
        }
        return Promise.reject(error)
    }
)

// 通用请求方法
export const http = {
    get(url, params) {
        return service.get(url, { params })
    },
    post(url, data) {
        return service.post(url, data)
    },
    put(url, data) {
        return service.put(url, data)
    },
    delete(url) {
        return service.delete(url)
    }
}